axios.defaults.baseURL = "http://localhost:8080/";
Vue.prototype.$http = axios;


//main.js
//======================axios的前置拦截器【拦截调用后端的请求====================//
axios.interceptors.request.use(res => {
    let token = localStorage.getItem("token");
    if (token) {
        //将token放在请求头：key：value = 【"token"：7de5e886-49fc-4c76-bc8d-e856193d7103】
        res.headers["token"] = token;
    }
    return res;
}, error => {
    Promise.reject(error)
})
//======================axios的前置拦截器【拦截调用后端的请求】====================//
//======================axios的后置拦截器【处理后台登录拦截的结果】====================//
axios.interceptors.response.use(res => {
    //后端响应的是没有登录的信息
    // "noLogin" === res.data.msg必须要加，业务出现异常他也返回false，直接跳转到登录页面了
    if (false === res.data.success && "noLogin" === res.data.msg) {
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        // 跳转到登录页面
        location.href="/login.html";
    }else if (false === res.data.success && "timeout" === res.data.msg) {
        alert("登录过期了哦！");
        // 跳转到登录页面
        location.href="/login.html";
    }
    return res;
}, error => {
    Promise.reject(error)
})
//======================axios的后置拦截器【处理后台登录拦截的结果】====================//

// 3.静态资源拦截器，拦截不发送axios请求的页面【登录之后才能访问】
let url = location.href;
// 如果访问的不是login.html或register.html，都要判断是否登录【logininfo】
if (url.indexOf("login.html") == -1
    && url.indexOf("register.html") == -1
    && url.indexOf("binder.html") == -1
    && url.indexOf("callback.html") == -1) { // 访问其他页面
    var logininfoStr = localStorage.getItem("logininfo");
    // 如果logininfoStr没有值就是没有登录
    if (!logininfoStr) {
        // 跳转登录页面
        location.href = "/login.html";
    }
}

//封装公用方法 - 将字符串的参数解析为json对象
function parseUrlParams2Obj(url) {//xxx?code=xxx&state=1
    let paramStr = url.substring(url.indexOf("?") + 1);//code=xxx&state=1
    let paramArr = paramStr.split("&");//[code=xxx,state=1]
    let paramObj = {};
    for (let i = 0; i < paramArr.length; i++) {
        let paramTemp = paramArr[i];//code=xxx
        let paramName = paramTemp.split("=")[0];//code
        let paramValue = paramTemp.split("=")[1];//xxx
        paramObj[paramName] = paramValue;//{code:xxx,state:1}
    }
    return paramObj;

}

